const connection = require('../config/database.js');

// 使用 async 函数来封装数据库查询
async function fetchUserVideoTime(userId) {
  return new Promise((resolve, reject) => {
      
      connection.query('SELECT user_videotime FROM ev_users WHERE id = ?', [userId], (error, results, fields) => {
          if (error) {
              reject(error);
              return;
          }
          // 假设查询结果只有一个，因此返回results[0]
          resolve(results[0] ? results[0].user_videotime : null);
      });
  });
}

// 另一个 async 函数来处理数据，现在可以传入userId来查询特定用户的数据
async function OutData(userId) {
  try {
      // 等待数据库查询完成，并传入userId参数
      const user_videotime = await fetchUserVideoTime(userId);

      // 在这里处理查询结果
      // 例如，进行数据转换或存储等操作

      return user_videotime;
  } catch (error) {
      console.error("Error executing query:", error);
      throw error; // 抛出错误供调用者处理
  }
}


function increaseCredit(id, data, res) {
    if (!id || !data) {
      return res.status(400).json({ error: '缺失参数：id或者data' });
    }
  
    const sql = 'UPDATE ev_users SET user_credit = user_credit + ? WHERE id = ?';
    const params = [data, id];
  
    connection.query(sql, params, (error, results) => {
      if (error) {
        return res.status(500).json({ error: '增加积分失败' });
      }
      // 操作成功，但不返回具体内容，只发送状态码
      res.sendStatus(204); // 204 No Content
    });
  }

  function updateCredit(id, data, res) {
    // 参数检查
    if (!id || !data) {
      return res.status(400).json({ error: '缺失参数：id或者data' });
    }
  
    // 构建 SQL 语句
    const sql = 'UPDATE ev_users SET user_credit = ? WHERE id = ?';
    // 准备要传入 SQL 语句的参数
    const params = [data, id];
  
    // 执行 SQL 语句
    connection.query(sql, params, (error, results) => {
      if (error) {
        // 如果有错误，发送错误响应
        return res.status(500).json({ error: '更新积分失败' });
      }
      // 如果没有错误，发送成功响应（可选：包含结果数据）
      // 这里我们选择不返回内容，只发送状态码，以保持响应简洁
      res.sendStatus(204); // 204 No Content
    });
  }

  
module.exports = {
    OutData: OutData,
    /*功能：获取视频数据
    用法：
                            async function processVideotime() {
                try {
                    // 假设你有一个有效的userId
                    const userId = ' ';

                    // 调用OutData函数并等待结果
                    const userVideoTime = await a.OutData(userId);

                    // 使用返回的结果
                    console.log('User video time:', userVideoTime);
                } catch (error) {
                    // 处理任何在OutData函数中抛出的错误
                    console.error('An error occurred while calling OutData:', error);
                }
            }
            processVideotime()
    */
  increaseCredit: increaseCredit,
   
  updateCredit: updateCredit
   
};
